﻿#ifndef _UART_MBUS_H_
#define _UART_MBUS_H_

#include <stdint.h>
#include "uart_Interface.h"

// typedef struct
// {
//     uint8_t m_sid;     /*从机ID*/
//     uint8_t cmd;     /*功能码*/
//     uint8_t len;     /*数据长度*/
//     uint8_t data[8]; /*数据*/
//     uint16_t crc16;  /*crc16校验*/
// } Frame;

// typedef struct
// {
//     uint8_t m_sid;     /*从机ID*/
//     uint8_t cmd;     /*功能码*/
//     uint16_t crc16;   /*crc16校验*/
// } Frame;

// #define STX 0x02 /*正文开始*/
// #define ETX 0x03 /*正文结束*/

// // 功能码
// #define ENQ 0x05 /*请求*/
// #define ACK 0x06 /*确认*/
// #define NAK 0x15 /*否认*/
// #define DAT 0xDA /*数据*/
// #define VER 0xDB /*版本*/
// #define RUN 0xDC /*跳转*/

class UartMbus
{
public:
// 功能码
#define ENQ 0x05 /*请求*/
#define ACK 0x06 /*确认*/
#define NAK 0x15 /*否认*/
#define DAT 0xDA /*数据*/
#define VER 0xDB /*版本*/
#define RUN 0xDC /*跳转*/
public:
    UartMbus();
    ~UartMbus();
    uint8_t getack();
    uint8_t ping();
    uint8_t update(uint8_t *pdata, uint32_t len);
    uint8_t version();
    uint8_t jump2app();

private:
    uint8_t m_sid;
    UART m_uart;
};

#endif